package net.ericaro.neojavagen.expressions;

/**
 * <b>NormalClassInstanceCreationExpression</b> ::= "new" <{@link net .ericaro .neojavagen .types .TypeArguments TypeArguments}>? <
 * {@link net .ericaro .neojavagen .types .ClassOrInterfaceType ClassOrInterfaceType}> "(" <{@link net .ericaro .neojavagen .expressions .Arguments Arguments}>?
 * ")" <{@link net .ericaro .neojavagen .classes .ClassBody ClassBody}>?
 * 
 * @author eric@ericaro.net
 */
public class NormalClassInstanceCreationExpression extends net.ericaro.neojavagen.JavaPartComposition implements net.ericaro.neojavagen.expressions.ClassInstanceCreationExpression {
	private net.ericaro.neojavagen.expressions.Arguments arguments;

	private net.ericaro.neojavagen.classes.ClassBody classBody;

	private net.ericaro.neojavagen.types.ClassOrInterfaceType classOrInterfaceType;

	private net.ericaro.neojavagen.types.TypeArguments typeArguments;

	public NormalClassInstanceCreationExpression(net.ericaro.neojavagen.types.ClassOrInterfaceType classOrInterfaceType) {
		this.typeArguments = null;
		this.classOrInterfaceType = classOrInterfaceType;
		this.arguments = null;
		this.classBody = null;
	}

	public NormalClassInstanceCreationExpression(net.ericaro.neojavagen.types.TypeArguments typeArguments, net.ericaro.neojavagen.types.ClassOrInterfaceType classOrInterfaceType, net.ericaro.neojavagen.expressions.Arguments arguments, net.ericaro.neojavagen.classes.ClassBody classBody) {
		super();
		this.typeArguments = typeArguments;
		this.classOrInterfaceType = classOrInterfaceType;
		this.arguments = arguments;
		this.classBody = classBody;
	}

	public net.ericaro.neojavagen.expressions.Arguments getArguments() {
		return arguments;
	}

	public net.ericaro.neojavagen.classes.ClassBody getClassBody() {
		return classBody;
	}

	public net.ericaro.neojavagen.types.ClassOrInterfaceType getClassOrInterfaceType() {
		return classOrInterfaceType;
	}

	public net.ericaro.neojavagen.types.TypeArguments getTypeArguments() {
		return typeArguments;
	}

	public void setArguments(net.ericaro.neojavagen.expressions.Arguments arguments) {
		this.arguments = arguments;
	}

	public void setClassBody(net.ericaro.neojavagen.classes.ClassBody classBody) {
		this.classBody = classBody;
	}

	public void setClassOrInterfaceType(net.ericaro.neojavagen.types.ClassOrInterfaceType classOrInterfaceType) {
		this.classOrInterfaceType = classOrInterfaceType;
	}

	public void setTypeArguments(net.ericaro.neojavagen.types.TypeArguments typeArguments) {
		this.typeArguments = typeArguments;
	}

	@Override
	public java.lang.String toString() {
		return print("new", typeArguments, classOrInterfaceType, "(", arguments, ")", classBody);
	}
}
